ND

[Resolvido] [Pedido] 3 Npcs [Acredito Médio]

Por NdboHakai, 01 de mar. de 2019 em Resolvidos

29
3.5k
NdboHakaiN
01 de março de 2019 às 08:36

Boa noite, rapaziada do Xtibia

TFS 0.4

  

Gostaria de um npc que o jogador entregava 6 items e em troca recebesse a storage.

 

Outro Npc \/

 

Tenho uma duvida, tem sistemas como por exemplo os de Graduação

Eles utilizam o Look para mostrar qual graduação o jogador está, mas como eu faço para um npc entregar uma storage com valor 1,2,3,4,5 como os de Graduação?

 

e Ultimo Npc \/

 

Gostaria de um npc que seria Travel, só que para ir pros locais que estão nesse npc

[Obs: mesmo ele sabendo o nome da cidade ele teria que fazer isso] = O jogador teria que escrever "Viajar"

E ele teria outras três funções = Só poderia funcionar com players sem PK e o jogador não precisaria falar "hi/viajar/templo/yes"

Queria que o jogador só falasse "hi/viajar/templo" e já seria teleportado

Eu poderia escolher se a cidade seria Premium ou Free

 

Por gentileza se poderem enviar no pastebin.com , porque aqui no forum toda vez que vou copiar algum script fica com error no script não sei porque.

 

Espero que me ajudem.

gabriel28G
01 de março de 2019 às 16:28

@NdboHakai

Não ta no pastebin porque fiz rapidão aqui mesmo.
1º NPC:

 

Spoiler
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
 
function onCreatureAppear(cid)       npcHandler:onCreatureAppear(cid)       end
function onCreatureDisappear(cid)     npcHandler:onCreatureDisappear(cid)       end
function onCreatureSay(cid, type, msg)     npcHandler:onCreatureSay(cid, type, msg)     end
function onThink()         npcHandler:onThink()           end

local storage = xxx
local storage2 = ttt
local itemID = yyy
local quantidade = uuu
 
function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	
	if msgcontains(msg, "entregar") then
			if getPlayerStorageValue(cid, storage) <= 0 then
				selfSay("preciso que voce me traga X itens tal. voce aceita a missao?", cid)
				talkState[talkUser] = 1
			elseif getPlayerStorageValue(cid, storage) == 1 then
				selfSay("voce me trouxe os itens?", cid)
				talkState[talkUser] = 1
			else
				selfSay("voce ja me foi de grande ajuda.", cid)
				talkState[talkUser] = 0
			end
			npcHandler:addFocus(cid)
		end
		

	
	if msgcontains(msg, "yes") and talkState[talkUser] == 1 then
			if getPlayerStorageValue(cid, storage) <= 0 then
				selfSay("obrigado por aceitar a missao", cid)
				setPlayerStorageValue(cid, storage, 1)
			elseif getPlayerStorageValue(cid, storage) == 1 and doPlayerRemoveItem(cid, itemID, quantidade) then
				selfSay("obrigado pela ajuda. como recompensa, lhe darei acesso ao lugar X", cid)
				setPlayerStorageValue(cid, storage, 2)
				setPlayerStorageValue(cid, storage2, 1)
			else
				selfSay("voce nao tem os X itens, esta tentando me enganar?", cid)
			end

	elseif msgcontains(msg, "no") and talkState[talkUser] == 1 then
        selfSay("então porque veio até mim?", cid)
        talkState[talkUser] = 0	
	end
	 
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 


2º NPC
Só você definir o valor da storage que vai representar a graduação X e na hora que o NPC setar a nova graduação, você seta a storage com o novo valor. 
Exemplo: A storage é 1111 e o aluno é valor 1, professor é valor 2 e mestre valor 3. Então, se quiser que vá de graduação nenhuma pra aluno, você faz> setPlayerStorageValue(cid, 1111, 1). Se quiser ir de aluno pra professor, você faz> setPlayerStorageValue(cid, 1111, 2). E assim por diante.

3º NPC
Não está com a necessidade de precisar falar "viajar", mas não precisa falar "yes", ele já manda na hora que você falar o nome da cidade.
 

Spoiler
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)


function onCreatureAppear(cid)    npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid)    npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg)  npcHandler:onCreatureSay(cid, type, msg) end
function onThink()       npcHandler:onThink() end

-- se nao quiser que tenha level, é so tirar.
-- basta repetir esses travelNode para os outros locais que você deseja adicionar


local travelNode = keywordHandler:addKeyword({'nome da cidade'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, level = 1 , cost = 0, destination = {x=XXXX, y=YYYY, z=ZZZZ}})


        
npcHandler:addModule(FocusModule:new())

 

 

NdboHakaiN
01 de março de 2019 às 20:59
4 horas atrás, gabriel28 disse:

@NdboHakai

Não ta no pastebin porque fiz rapidão aqui mesmo.
1º NPC:

 

  Mostrar conteúdo oculto

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
 
function onCreatureAppear(cid)       npcHandler:onCreatureAppear(cid)       end
function onCreatureDisappear(cid)     npcHandler:onCreatureDisappear(cid)       end
function onCreatureSay(cid, type, msg)     npcHandler:onCreatureSay(cid, type, msg)     end
function onThink()         npcHandler:onThink()           end

local storage = xxx
local storage2 = ttt
local itemID = yyy
local quantidade = uuu
 
function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	
	if msgcontains(msg, "entregar") then
			if getPlayerStorageValue(cid, storage) <= 0 then
				selfSay("preciso que voce me traga X itens tal. voce aceita a missao?", cid)
				talkState[talkUser] = 1
			elseif getPlayerStorageValue(cid, storage) == 1 then
				selfSay("voce me trouxe os itens?", cid)
				talkState[talkUser] = 1
			else
				selfSay("voce ja me foi de grande ajuda.", cid)
				talkState[talkUser] = 0
			end
			npcHandler:addFocus(cid)
		end
		

	
	if msgcontains(msg, "yes") and talkState[talkUser] == 1 then
			if getPlayerStorageValue(cid, storage) <= 0 then
				selfSay("obrigado por aceitar a missao", cid)
				setPlayerStorageValue(cid, storage, 1)
			elseif getPlayerStorageValue(cid, storage) == 1 and doPlayerRemoveItem(cid, itemID, quantidade) then
				selfSay("obrigado pela ajuda. como recompensa, lhe darei acesso ao lugar X", cid)
				setPlayerStorageValue(cid, storage, 2)
				setPlayerStorageValue(cid, storage2, 1)
			else
				selfSay("voce nao tem os X itens, esta tentando me enganar?", cid)
			end

	elseif msgcontains(msg, "no") and talkState[talkUser] == 1 then
        selfSay("então porque veio até mim?", cid)
        talkState[talkUser] = 0	
	end
	 
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 


2º NPC
Só você definir o valor da storage que vai representar a graduação X e na hora que o NPC setar a nova graduação, você seta a storage com o novo valor. 
Exemplo: A storage é 1111 e o aluno é valor 1, professor é valor 2 e mestre valor 3. Então, se quiser que vá de graduação nenhuma pra aluno, você faz> setPlayerStorageValue(cid, 1111, 1). Se quiser ir de aluno pra professor, você faz> setPlayerStorageValue(cid, 1111, 2). E assim por diante.

3º NPC
Não está com a necessidade de precisar falar "viajar", mas não precisa falar "yes", ele já manda na hora que você falar o nome da cidade.
 

  Mostrar conteúdo oculto

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)


function onCreatureAppear(cid)    npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid)    npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg)  npcHandler:onCreatureSay(cid, type, msg) end
function onThink()       npcHandler:onThink() end

-- se nao quiser que tenha level, é so tirar.
-- basta repetir esses travelNode para os outros locais que você deseja adicionar


local travelNode = keywordHandler:addKeyword({'nome da cidade'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, level = 1 , cost = 0, destination = {x=XXXX, y=YYYY, z=ZZZZ}})


        
npcHandler:addModule(FocusModule:new())

 

 

Certo, irei testar

Sobre o npc 1, tem condições de eu adicionar + de 1 item? exemplo : id 1 , 2 , 3 , 4 ,5 

Sobre o npc 3, se o jogador tiver PK ele ainda assim vai teleportar o jogador? e como adiciono para a cidade ser premium?

Editado Março 1 por NdboHakai

gabriel28G
01 de março de 2019 às 22:33

@NdboHakai
NPC 1: Onde tem local itemID, troca por local itemID = {qqq, www, eee, rrr, ttt} e testa.
NPC 3: Creio que não, mas vê ai. Se teleportar, me fala.

Kuro o ShinigaK
02 de março de 2019 às 14:04

Primeiro NPC :

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false 
end 

local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid 

str = 98144 --- STORAGE QUE VAI GANHAR
local temitens = {2160, 8306, 2400, 5878, 2494, 2486, 2491} --- ID DOS ITENS QUE PRECISA PRA TROCAR PELA STORAGE!


function onItemPlayer(cid, itemid)
for i = 1, #temitens do
if getPlayerItemCount(cid, temitens[i]) < 1 then
return false
end
end
return true
end

function removeItem(cid)
for i in ipairs (temitens) do
doPlayerRemoveItem(cid, temitens[i], 1)
end
end

if msgcontains(msg, "trocar") and onItemPlayer(cid, temitens) and getPlayerStorageValue(cid, str) < 1 then
removeItem(cid)
setPlayerStorageValue(cid, str, 1)
doSendMagicEffect(getThingPos(cid), 12)
selfSay("Storage Adicionada !", cid)
else
selfSay("Voce nao tem os itens necessarios ou ja tem a storage!", cid)
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Terceiro NPC: 

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false 
end 

local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid 

postemplo = {x=80, y=348, z=7} --- POSIÇÃO DO TEMPLO QUE O PLAYER VAI SER TELEPORTADO
premium = true --- se precisar de premium mude para TRUE se não precisar deixe FALSE


if msgcontains(msg, "viajar") then
selfSay("digite (templo)", cid)
talkState[talkUser] = 1


elseif msgcontains(msg, "templo") and talkState[talkUser] == 1 and isPremium(cid) == premium and isPlayerPzLocked(cid) == false then
selfSay("que assim seja", cid)
doTeleportThing(cid, postemplo)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0
end
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

O segundo npc eu não entendi nada do que você quer, explica melhor

NdboHakaiN
02 de março de 2019 às 14:08
1 minuto atrás, Kuro o Shiniga disse:

Primeiro NPC :

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false 
end 

local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid 

str = 98144 --- STORAGE QUE VAI GANHAR
local temitens = {2160, 8306, 2400, 5878, 2494, 2486, 2491} --- ID DOS ITENS QUE PRECISA PRA TROCAR PELA STORAGE!


function onItemPlayer(cid, itemid)
for i = 1, #temitens do
if getPlayerItemCount(cid, temitens[i]) < 1 then
return false
end
end
return true
end

function removeItem(cid)
for i in ipairs (temitens) do
doPlayerRemoveItem(cid, temitens[i], 1)
end
end

if msgcontains(msg, "trocar") and onItemPlayer(cid, temitens) and getPlayerStorageValue(cid, str) < 1 then
removeItem(cid)
setPlayerStorageValue(cid, str, 1)
doSendMagicEffect(getThingPos(cid), 12)
selfSay("Storage Adicionada !", cid)
else
selfSay("Voce nao tem os itens necessarios ou ja tem a storage!", cid)
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Terceiro NPC: 

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false 
end 

local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid 

postemplo = {x=80, y=348, z=7} --- POSIÇÃO DO TEMPLO QUE O PLAYER VAI SER TELEPORTADO
premium = true --- se precisar de premium mude para TRUE se não precisar deixe FALSE


if msgcontains(msg, "viajar") then
selfSay("digite (templo)", cid)
talkState[talkUser] = 1


elseif msgcontains(msg, "templo") and talkState[talkUser] == 1 and isPremium(cid) == premium and isPlayerPzLocked(cid) == false then
selfSay("que assim seja", cid)
doTeleportThing(cid, postemplo)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0
end
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

O segundo npc eu não entendi nada do que você quer, explica melhor

Primeiro Npc = Aonde adiciono a quantidade do item?

Segundo Npc = na realidade era uma coisa que eu tinha em mente, mas desistir. Mas na verdade oque eu gostaria era de um npc de missão.

Terceiro Npc = como faço para adicionar + de 1 cidade??

Kuro o ShinigaK
02 de março de 2019 às 14:12

Primeiro NPC: Você adiciona aqui os IDS dos itens que deseja, mas antes apaga os que tem dentro dos {}, e sempre que adicionar um ID coloca a ",", igual ta aqui \/

Citar
local temitens = {2160, 8306, 2400, 5878, 2494, 2486, 2491} --- ID DOS ITENS QUE PRECISA PRA TROCAR PELA STORAGE!

Segundo NPC: me fala como você quer a missão do npc que eu faço pra você!

 

Terceiro NPC: pra adicionar mais de uma cidade vai ter que fazer algumas alterações, esse ai só manda pra uma, deixa as posições de cada cidade que você quer e o nome de cada uma que faço pra você.

NdboHakaiN
02 de março de 2019 às 14:28
17 minutos atrás, Kuro o Shiniga disse:

Primeiro NPC: Você adiciona aqui os IDS dos itens que deseja, mas antes apaga os que tem dentro dos {}, e sempre que adicionar um ID coloca a ",", igual ta aqui \/

Segundo NPC: me fala como você quer a missão do npc que eu faço pra você!

 

Terceiro NPC: pra adicionar mais de uma cidade vai ter que fazer algumas alterações, esse ai só manda pra uma, deixa as posições de cada cidade que você quer e o nome de cada uma que faço pra você.

Primeiro NPC: sobre isso eu já entendi, mas sobre a quantidade de cada item aonde eu posso mexer ?

Segundo NPC:

O jogador poderia falar com o npc a qualquer level 

[Hi/Lista] ou [Hi/Missoes], ai aparecia uma lista com todas missões ai o jogador escolhe uma, [Hi/Lista/Nome/yes ou Hi/Nome/Yes], O npc mandaria ele catar items

Exemplo : Quantidade : 50 [ID: 2160], Quantidade : 30 [ID: 2159], Quantidade : 50 [ID: 2161] e em troca , daria 1 item pro jogador.

Obs: os exemplo que fiz a cima foram quantidades e IDS aleatórios, mas é praticamente isso que eu gostaria que o npc de missão funcionasse.

Teria 6 missões, as recompensas seria : 11990,11991,11992,11993,11994 e 11995.

 

Terceiro NPC: é que eu ainda não criei as cidades, tô montando elas ainda mas já tenho 3 pronta : Hakai City Position: 1024 1026 7 , Desert City Position: 1358 669 6  e Ice City Position: 592 829 7.

Editado Março 2 por NdboHakai

Yan LiimaY
02 de março de 2019 às 15:08
Melhor resposta

Conforme o pedido, NPC3:

XML:

Spoiler
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Travel" script="travel.lua" walkinterval="0" floorchange="0" walkable = "false">
	<health now="100" max="100"/>
	<look type="287"/>
	<parameters>
		<parameter key="module_shop" value="1"/>
		<parameter key="message_greet" value="Bem-vindo, |PLAYERNAME|. Você quer viajar? diga {viajar}."/>
	</parameters>
</npc>

 

 

LUA:

Spoiler
local DESTINO = {x=1024, y=1026, z=7} -- POS
local DESTINO2 = {x=1358, y=669, z=6} -- POS
local DESTINO3 = {x=592, y=829, z=7} -- POS

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
 
function onCreatureAppear(cid)         npcHandler:onCreatureAppear(cid)         end
function onCreatureDisappear(cid)      npcHandler:onCreatureDisappear(cid)         end
function onCreatureSay(cid, type, msg)   npcHandler:onCreatureSay(cid, type, msg:lower())   end
function onThink()                  npcHandler:onThink()                  end
local talkState = {}
 
function creatureSayCallback(cid, type, msg)
   if(not npcHandler:isFocused(cid)) then
      return false
   end
 
   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
 if getCreatureCondition(cid, CONDITION_INFIGHT) == false then
 
   if msgcontains(msg, "viajar") then
   selfSay("Posso te levar para: {Hakai City}, {Desert City}, {Ice City}", cid)
   elseif msgcontains(msg, "hakai city") then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO)
      doSendMagicEffect(DESTINO, 10)
   elseif msgcontains(msg, "desert city") then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO2)
      doSendMagicEffect(DESTINO2, 10)
   elseif msgcontains(msg, "ice city") then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO3)
      doSendMagicEffect(DESTINO3, 10)
   end
   else
         selfSay("Desculpe, mas você está em batalha.", cid)
end
   return true
end
 
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

NdboHakaiN
02 de março de 2019 às 23:13

@Up

Yan LiimaY
02 de março de 2019 às 23:37
23 minutos atrás, NdboHakai disse:

@Up

Aqui no fórum comentar up ou bump no proprio tópico é proibido. Para isso existe o botão "up.png.8f80e31a2616fbc02f6ea18db3a80aac.png" que estará disponivel a cada 24hrs.

....

 

O NPC travel em que te enviei funcionou? Agora só falta o NPC2?

Editado Março 2 por nedroesdoksdja

NdboHakaiN
02 de março de 2019 às 23:49
20 minutos atrás, Yan Liima disse:

Aqui no fórum comentar up ou bump no proprio tópico é proibido. Para isso existe o botão "up.png.8f80e31a2616fbc02f6ea18db3a80aac.png" que estará disponivel a cada 24hrs.

....

 

O NPC travel em que te enviei funcionou? Agora só falta o NPC2?

Desculpe pelo error.

Testei o npc, mas não teria como proibir o jogador de falar a cidade antes do "viajar" não?

E aonde adiciono se quero a cidade premium ou não?

 

Sobre o Npc 2 sim

Editado Março 2 por NdboHakai

gabriel28G
02 de março de 2019 às 23:59

Pro NPC de viajem, troca:
 

Spoiler
if msgcontains(msg, "viajar") then
selfSay("digite (templo)", cid)
talkState[talkUser] = 1


elseif msgcontains(msg, "templo") and talkState[talkUser] == 1 and isPremium(cid) == premium and isPlayerPzLocked(cid) == false then
selfSay("que assim seja", cid)
doTeleportThing(cid, postemplo)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0
end
end

 

Por:
 

Spoiler
if msgcontains(msg, "viajar") then
selfSay("digite (templo)", cid)
talkState[talkUser] = 1
end

if msgcontains(msg, "templo") and talkState[talkUser] == 1 and isPremium(cid) == premium and isPlayerPzLocked(cid) == false then
selfSay("que assim seja", cid)
doTeleportThing(cid, postemplo)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0
end

 

 

NdboHakaiN
03 de março de 2019 às 00:06
7 minutos atrás, gabriel28 disse:

Pro NPC de viajem, troca:
 

  Ocultar conteúdo

if msgcontains(msg, "viajar") then
selfSay("digite (templo)", cid)
talkState[talkUser] = 1


elseif msgcontains(msg, "templo") and talkState[talkUser] == 1 and isPremium(cid) == premium and isPlayerPzLocked(cid) == false then
selfSay("que assim seja", cid)
doTeleportThing(cid, postemplo)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0
end
end

 

Por:
 

  Ocultar conteúdo

if msgcontains(msg, "viajar") then
selfSay("digite (templo)", cid)
talkState[talkUser] = 1
end

if msgcontains(msg, "templo") and talkState[talkUser] == 1 and isPremium(cid) == premium and isPlayerPzLocked(cid) == false then
selfSay("que assim seja", cid)
doTeleportThing(cid, postemplo)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0
end

 

 

Fazendo isso dá error na linha 35.

Mesmo assim testei adicionar +1 end ali no segundo end, e não retorna nenhum error e não teleporta o player.

 

O npc do @Yan Liima de viajar, tá sendo o que mais chegou perto do que eu queria, só faltou eu escolher qual cidade eu gostaria que seria premium.

Editado Março 3 por NdboHakai

gabriel28G
03 de março de 2019 às 00:12

@NdboHakai
Vê agora. (mude todo o script)
 

Spoiler
local DESTINO = {x=1024, y=1026, z=7} -- POS
local DESTINO2 = {x=1358, y=669, z=6} -- POS
local DESTINO3 = {x=592, y=829, z=7} -- POS

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
 
function onCreatureAppear(cid)         npcHandler:onCreatureAppear(cid)         end
function onCreatureDisappear(cid)      npcHandler:onCreatureDisappear(cid)         end
function onCreatureSay(cid, type, msg)   npcHandler:onCreatureSay(cid, type, msg:lower())   end
function onThink()                  npcHandler:onThink()                  end
local talkState = {}
 
function creatureSayCallback(cid, type, msg)
   if(not npcHandler:isFocused(cid)) then
      return false
   end
 
   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
 if getCreatureCondition(cid, CONDITION_INFIGHT) == false then
 
   if msgcontains(msg, "viajar") then
   selfSay("Posso te levar para: {Hakai City}, {Desert City}, {Ice City}", cid)
   talkState[talkUser] = 1
   npcHandler:addFocus(cid)
   end
   
   if msgcontains(msg, "hakai city") and talkState[talkUser] == 1 then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO)
      doSendMagicEffect(DESTINO, 10)
   elseif msgcontains(msg, "desert city") then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO2)
      doSendMagicEffect(DESTINO2, 10)
   elseif msgcontains(msg, "ice city") then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO3)
      doSendMagicEffect(DESTINO3, 10)
   end
   else
         selfSay("Desculpe, mas você está em batalha.", cid)
end
   return true
end
 
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())